package com.ruoyi.common.utils.ik;

import com.ruoyi.common.utils.StringUtils;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description ik分词工具类
 * @ClassName IkUtils
 * @Author kenn
 * @Version 1.0.0
 * @Date 2023年11月27日 10:53:00
 */
public final class IkUtils {

    private IkUtils() {}

    public static List<IkDto> participle(String text, boolean useSmart) throws IOException {
        List<IkDto> ikDtos = new ArrayList<>();
        if (StringUtils.isNotEmpty(text)) {
            // 创建IKAnalyzer分词器
            IKSegmenter ikSegmenter = new IKSegmenter(new StringReader(text), useSmart);
            // 遍历分词结果
            Lexeme lexeme;
            while ((lexeme = ikSegmenter.next()) != null) {
                String word = lexeme.getLexemeText();
                int weight = lexeme.getLength();
                IkDto ikDto = new IkDto();
                ikDto.setWord(word);
                ikDto.setWeight(weight);
                ikDtos.add(ikDto);
            }
        }
        return ikDtos;
    }

}
